package com.top10.utils;


import com.top10.entity.Address;
import com.top10.entity.Express;

public class ExpressPriceUtil {

	/**
	 * 根据用户和商户之间的距离计算快递费用
	 * 
	 * @param address 用户的地址
	 * @param shopAddress 商户的地址
	 * @param express 商户的快递信息
	 * @return 计算后的快递价格
	 */
	public static int calcPrice(Address address, Address shopAddress, Express express) {
		// 获取两个经纬度之间的距离
		String distanceStr = DistanceUtil.getDistance(address.getLat(), address.getIng(), shopAddress.getLat(),
				shopAddress.getIng());
		double distance = Double.parseDouble(distanceStr);

		double startDistance = express.getStart_distance();
		double startPrice = express.getStart_price();
		double unitDistance = express.getUnit_distance();
		double unitPrice = express.getUnit_price();
		// 默认邮费为初始邮费（当邮件里程超出初始里程后再重新计算邮费）
		double price = startPrice;
		// 如果邮寄距离大于初始距离，则根据邮费规则计算邮费
		if (distance > startDistance) {
			// 邮费=初始邮费+(((直线距离-初始距离)/单位距离)*单位邮费)
			price = startPrice + (((distance - startDistance) / unitDistance) * unitPrice);
			// 如果直线距离小于了初始距离，则邮费计算出来的结果会可能小于最低邮费，甚至成负数，所以这里需要做一下控制
			price = price > startPrice ? price : startPrice;
		}
		// 将邮费取整（不四舍五入，直接舍弃小数点后面的数）
		return (int) price;
	}
}
